package com.colin.log.util;

/**
 * 日志脱敏工具类
 */
public class SensitiveUtil {
    /**
     * 信息按规则过滤脱敏
     * @param message 原始信息
     * @return 脱敏后的信息
     */
    public static String messageConvert(String message) {
        // 获取原始日志内容
        if (message == null || message.length() == 0) {
            return message;
        }
        //手机号过滤
        message = RegUtil.isMobile(message)?desensitize(message, 3, 3):message;
        //身份证号过滤
        message = ValidateIdCardNoUtil.isCardId(message)?desensitize(message, 4, 4):message;
        
        return message;
    }

    /**
     * 脱敏处理 指定起止展示长度 剩余用*号代替
     * @param content     待脱敏的内容
     * @param startLength 开始展示长度
     * @param endLength   末尾展示长度
     * @return 脱敏后的字符串
     */
    public static String desensitize(String content, int startLength, int endLength) {
        StringBuilder sb = new StringBuilder();
        sb.append(content, 0, startLength);
        for (int i = 0; i < content.length() - startLength - endLength; i++) {
            sb.append("*");
        }
        sb.append(content, content.length() - endLength, content.length());
        return sb.toString();
    }
}
